From 62d1e95e708bb750b405cd6c5406ed7dff15522c Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Mon, 25 Jul 2011 13:57:49 +0100 Subject: [PATCH] hvmloader: Replace bios_relocate hook with bios_load hook Used by OVMF BIOS handler. Signed-off-by: Bei Guan Signed-off-by: Keir Fraser --- tools/firmware/hvmloader/config.h | 4 ++-- tools/firmware/hvmloader/hvmloader.c | 13 +++++++------ tools/firmware/hvmloader/rombios.c | 10 +++++++--- tools/firmware/hvmloader/seabios.c | 4 ++-- 4 files changed, 18 insertions(+), 13 deletions(-) diff --git a/tools/firmware/hvmloader/config.h b/tools/firmware/hvmloader/config.h index ff34b32853..eb91611e30 100644 --- a/tools/firmware/hvmloader/config.h +++ b/tools/firmware/hvmloader/config.h @@ -20,11 +20,11 @@ struct bios_config { int load_roms; unsigned int optionrom_start, optionrom_end; + void (*bios_load)(const struct bios_config *config); + void (*bios_info_setup)(void); void (*bios_info_finish)(void); - void (*bios_relocate)(void); - void (*vm86_setup)(void); void (*e820_setup)(void); diff --git a/tools/firmware/hvmloader/hvmloader.c b/tools/firmware/hvmloader/hvmloader.c index f8553bb1ec..d7b8078b00 100644 --- a/tools/firmware/hvmloader/hvmloader.c +++ b/tools/firmware/hvmloader/hvmloader.c @@ -416,12 +416,13 @@ int main(void) bios->create_smbios_tables(); } - printf("Loading %s ...\n", bios->name); - memcpy((void *)bios->bios_address, bios->image, - bios->image_size); - - if (bios->bios_relocate) - bios->bios_relocate(); + if (bios->bios_load) { + bios->bios_load(bios); + } else { + printf("Loading %s ...\n", bios->name); + memcpy((void *)bios->bios_address, bios->image, + bios->image_size); + } if ( (hvm_info->nr_vcpus > 1) || hvm_info->apic_mode ) { if ( bios->create_mp_tables ) diff --git a/tools/firmware/hvmloader/rombios.c b/tools/firmware/hvmloader/rombios.c index 96ba718f3f..632ab87c45 100644 --- a/tools/firmware/hvmloader/rombios.c +++ b/tools/firmware/hvmloader/rombios.c @@ -81,11 +81,15 @@ static void rombios_setup_bios_info(void) memset(info, 0, sizeof(*info)); } -static void rombios_relocate(void) +static void rombios_load(const struct bios_config *config) { uint32_t bioshigh; struct rombios_info *info; + printf("Loading %s ...\n", config->name); + memcpy((void *)config->bios_address, config->image, + config->image_size); + bioshigh = rombios_highbios_setup(); info = (struct rombios_info *)BIOS_INFO_PHYSICAL_ADDRESS; @@ -169,11 +173,11 @@ struct bios_config rombios_config = { .optionrom_start = OPTIONROM_PHYSICAL_ADDRESS, .optionrom_end = OPTIONROM_PHYSICAL_END, + .bios_load = rombios_load, + .bios_info_setup = rombios_setup_bios_info, .bios_info_finish = NULL, - .bios_relocate = rombios_relocate, - .vm86_setup = rombios_init_vm86_tss, .e820_setup = rombios_setup_e820, diff --git a/tools/firmware/hvmloader/seabios.c b/tools/firmware/hvmloader/seabios.c index 5230510421..e1ce5552d1 100644 --- a/tools/firmware/hvmloader/seabios.c +++ b/tools/firmware/hvmloader/seabios.c @@ -138,11 +138,11 @@ struct bios_config seabios_config = { .optionrom_start = 0, .optionrom_end = 0, + .bios_load = NULL, + .bios_info_setup = seabios_setup_bios_info, .bios_info_finish = seabios_finish_bios_info, - .bios_relocate = NULL, - .vm86_setup = NULL, .e820_setup = seabios_setup_e820, -- 2.30.2